package com.trainoo.alibaba.nacos;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Auther: zt
 * @Date: 2019/12/12 14:02
 * @Description:
 *
 *  一、配置文件名必须是：bootstrap.properties ，否则会抛出以下错误
 *  Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'trainoo.test.helloworld' in value "${trainoo.test.hellow
 *
 *  二、同时，spring.application.name值必须与Nacos中创建的配置Data Id匹配（除了.properties或者.yaml后缀）
 *
 *  三、关于多环境配置文件
 *    1.可以使用 profile 区分，如： ${spring.application.name}-${spring.profiles.active}.properties
 *    2.可以使用 group 区分
 *    3.可以使用 namespace 区分 （官方建议方案）
 *    注意：不论用哪一种方式实现。对于指定环境的配置都不应该配置在应用的bootstrap.properties中，使用启动命令: -Daaa=xxx方式指定会更灵活
 */
@SpringBootApplication
public class NacosConfigApplication {

    public static void main(String[] args) {
        SpringApplication.run(NacosConfigApplication.class);
    }

    @Slf4j
    @RestController
    @RefreshScope
    static class TestController{

        @Value("${trainoo.test.helloworld}")
        String hello;

        @GetMapping("/getConfig")
        public String getHello(){
            return hello;
        }
    }
}
